// 入口文件: 导入那个函数 挂在 wx 全局对象上
import { toast } from './utils/index'
import http from './utils/http'
import map from './utils/map'
import dayjs from 'dayjs'

wx.toast = toast
wx.dayjs = dayjs
wx.http = http
wx.map = map
// wx.num = 100

App({
  token: wx.getStorageSync('token') || '', // 很多页面都要用
  refreshToken: wx.getStorageSync('refreshToken') || '', // 很多页面都要用
  map: map,

  // getApp().token = 123 暴力
  // getApp().setToken('123kljlksdfjalk') 将来登录了 记得调用这个家伙
  setToken(token) {
    this.token = token // 存在app
    wx.setStorageSync('token', token)
  },
  setRefreshToken(refreshToken) {
    this.refreshToken = refreshToken // 存在app
    wx.setStorageSync('refreshToken', refreshToken)
  },

  // 将来要清除token  记得调用这个家伙  getApp().removeToken()
  removeToken() {
    this.token = ''
    wx.removeStorageSync('token')
  },
  removeRefreshToken() {
    this.refreshToken = ''
    wx.removeStorageSync('refreshToken')
  },

  toast(title = '获取数据失败') {
    wx.showToast({
      title,
      icon: 'none',
      mask: true,
    })
  },

  checkLogin() {
    if (!this.token) {
      wx.redirectTo({ url: '/pages/login/index' }) // 首页 登录
      wx.toast('你先去登录吧')
    }
  },
})

/* 
  登录访问控制(主页鉴权) =>  路由守卫中对于有无 token 进行判断拦截 

  小程序没有守卫, 但是也要做登录访问控制
    这个项目只有三个页面可以无 token 访问(白名单: 首页 公告详情页 登录)
    剩余其他页面都需要判断有无 token    
      有 token 才可以访问  
      没有 token 拦截走登录

  house_pkg/pages/list/index 页面举个例子
   只要是加载这个页面了(onLoad) 二话不说 先检查 token


  1. 全局 checkLogin
  2. 封装一个组件 check-login 用于检测登录(功能和方案一一模一样的 只是操作秀一点)
*/
